
#include <sys/stat.h>
#include "serverconfig.h"


CSrvConfig::CSrvConfig()
{
    m_strFileName   = "";
    m_tLastModeTime = 0;
    m_pDoc          = NULL;
    m_isFirstRead   = true;
}

CSrvConfig::~CSrvConfig()
{

}

void CSrvConfig::Init(const std::string& strFileName)
{
    m_strFileName = strFileName;
    if (m_strFileName.empty())
    {
        m_strFileName = CONFIG_FILE_NAME;
    }
}

bool CSrvConfig::IsModify()
{
    bool isMod = false;
    struct stat sConfigFileStat;

    stat(m_strFileName.c_str(),&sConfigFileStat);

    if (m_tLastModeTime != sConfigFileStat.st_mtime)
    {
        m_tLastModeTime = sConfigFileStat.st_mtime;
        isMod           = true;
    }

    return isMod;
}

bool CSrvConfig::InitCfgXml()
{
    if (m_pDoc)
    {
        delete m_pDoc;
        m_pDoc = NULL;
    } 

    m_pDoc = new TiXmlDocument(m_strFileName.c_str());
    if (!m_pDoc->LoadFile())
    {
        return false;
    }

    return true;
}

bool CSrvConfig::LoadConfig()
{
    if (!IsModify())
    {
        return true;
    }

    if (!InitCfgXml())
    {
        return false;
    }

    if (!LoadMyItems())
    {
        return false;
    }

    if (m_isFirstRead)
    {
        m_isFirstRead = false;
    }

    return true;
}


